﻿#ifndef COMMODITYMANAGEMENTVIEW_H
#define COMMODITYMANAGEMENTVIEW_H
#include"XQWidget.h"
#include"ProductModel.h"
class ProductView;
class ProductManagementView :public XQWidget
{
	Q_OBJECT
public:
	ProductManagementView(QWidget* parent = nullptr);
	~ProductManagementView();
	enum CreateWidget;
	void setHideOperationButtons(bool hide);
public:
	XQTablePagingWidget* tableView()const;
	ProductModel product(qint64 index);
	void setProduct(qint64 index, const ProductModel& model);
	void setProduct(const QList<ProductModel>& list);
	void addProduct(const ProductModel& product);
	void removeProduct(const ProductModel& product);
	void clear();
	void showProduct(int page = 1);
	void updataTable();
public:
	//获取类型列表
	QStringList typeList();
	//设置默认的右键菜单函数
	void setContextMenuFunc();
	void menuAddDefaultMenu(QMenu* menu, const QPoint& pos);
	void menuAddBuyProduc(QMenu* menu, const QPoint& pos);
signals://信号
	void addProductSignals(const ProductModel& product);
	void addProductCreateSignals(ProductView* view);
	void modifyProductSignals(const ProductModel& product);
	void modifyProductCreateSignals(ProductView* view);
	void removeProductSignals(const ProductModel& product);
	void buyProductSignals(const ProductModel& product);
	void buyProductCreateSignals(ProductView* view);
public:
	//初始化
	virtual void init();
protected://
	void addOperate();
	void modifyOperate();
	void removeOperate();
protected://初始化
	virtual void init_ui();
	void init_table();
	QWidget* init_operateButton();//操作按钮
protected:
	QSet<QString>m_type;//
	XQTablePagingWidget* m_tableView = nullptr;
	QPushButton* m_addButton = nullptr;
	QPushButton* m_modifyButton = nullptr;
	QPushButton* m_removeButton = nullptr;
};
enum ProductManagementView::CreateWidget
{
	ProductAddView,
	ProductModifyView,
	ProductBuyView
};
#endif // !CommodityManagementView